import Fetch from '../api/request'

module.exports = class ServiceGroup {
  /**
   * 服务组信息
   * @param {*} ctx
   */
  static async info(ctx) {
    let environmentId = ctx.checkQuery('environmentId').value
    let groupId = ctx.checkQuery('groupId').value
    let ret = {}
    await Fetch.get({
      url: '/api/environments/' + environmentId + '/groups/' + groupId,
      ctx
    }).then((res) => {
      ret = res
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })

    ctx.body = ret
  }

  /**
   * 获取服务组下面的所有服务
   * @param {*} ctx
   */
  static async services(ctx) {
    let environmentId = ctx.checkQuery('environmentId').value
    let groupId = ctx.checkQuery('groupId').value
    let ret = {}
    await Fetch.get({
      url: '/api/environments/' + environmentId + '/groups/' + groupId + '/services',
      ctx
    }).then((res) => {
      ret = res
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })

    ctx.body = ret
  }

  /**
   * 服务组添加
   * @param ctx
   * @returns {Promise<void>}
   */
  static async serviceGroupAdd(ctx) {
    let group = ctx.request.body
    let ret = {}
    await Fetch.post({
      url: '/api/environments/' + group.environmentId + '/groups',
      ctx,
      params: group
    }).then((res) => {
      ret = res
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })

    ctx.body = ret
  }

  /**
   * 服务组修改
   * @param ctx
   * @returns {Promise<void>}
   */
  static async serviceGroupEdit(ctx) {
    let group = ctx.request.body
    let ret = {}
    await Fetch.put({
      url: '/api/environments/' + group.environmentId + '/groups/' + group.groupId,
      ctx,
      params: group
    }).then((res) => {
      ret = res
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })

    ctx.body = ret
  }

  /**
   * 服务组操作
   * @param {*} ctx
   */
  static async groupMani(ctx) {
    let ret = {}
    if (ctx.request.method === 'DELETE') {
      await Fetch.delete({
        url: ctx.request.url,
        ctx
      }).then((res) => {
        ret = res
      }).catch((err) => {
        ctx.errorHandle(ctx, err)
      })
    }
    ctx.body = ret
  }
}
